import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;

import javax.swing.SwingConstants;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JList;
import javax.swing.ScrollPaneConstants;
import javax.swing.JSplitPane;
import javax.swing.JSeparator;
/**
 * Fenêtre de consultation d'un ouvrage
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Culet 
 * @version 1.0
 */



public class VueConsultOuvrage extends Vue {

	private JPanel contentPane;
	private JTextField textFieldIsbn;
	private JTextField textFieldTitre;
	private JTextField textFieldEditeur;
	private JTextField textFieldDateEdition;
	private JTextField textFieldNbConsultables;
	private JTextField textFieldNbEmpruntables;
	private JButton buttonFermer;
	private JButton btnRechercher;
	private JButton btnAnnuler;
	private JScrollPane scrollPane_1;
	private JScrollPane scrollPane_2;
	private JLabel lblExemplairesDeLouvrage;
	private JLabel lblAuteursDeLouvrage;
	private JLabel lblMotsclefsPourCet;
	private JTextArea textAreaExemplaires;
	private JTextArea textAreaAuteurs;
	private JTextArea textAreaMotsCles;
	private JSplitPane splitPane;
//	private Ouvrage _ouvrage;
	
	
	/**
	 * Create the frame.
	 */
	public VueConsultOuvrage(Controleur controleur) {
		super(controleur);
		setTitle("Informations sur un ouvrage");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 604, 698);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel labelIsbn = new JLabel("Isbn");
		labelIsbn.setHorizontalAlignment(SwingConstants.RIGHT);
		labelIsbn.setBounds(133, 34, 61, 15);
		contentPane.add(labelIsbn);
		
		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(224, 32, 214, 19);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Titre");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(17, 147, 61, 15);
		contentPane.add(lblNewLabel_1);
		
		textFieldTitre = new JTextField();
		textFieldTitre.setEditable(false);
		textFieldTitre.setBounds(112, 145, 214, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueConsultOuvrage.this);}
		});
		buttonFermer.setBounds(251, 633, 107, 25);
		contentPane.add(buttonFermer);
		
		textFieldEditeur = new JTextField();
		textFieldEditeur.setEditable(false);
		textFieldEditeur.setColumns(10);
		textFieldEditeur.setBounds(112, 183, 214, 19);
		contentPane.add(textFieldEditeur);
		
		JLabel lblEditeur = new JLabel("Editeur");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(27, 185, 61, 15);
		contentPane.add(lblEditeur);
		
		textFieldDateEdition = new JTextField();
		textFieldDateEdition.setEditable(false);
		textFieldDateEdition.setColumns(10);
		textFieldDateEdition.setBounds(111, 214, 114, 19);
		contentPane.add(textFieldDateEdition);
		
		JLabel lblDatedition = new JLabel("Date édition");
		lblDatedition.setHorizontalAlignment(SwingConstants.RIGHT);
		lblDatedition.setBounds(6, 212, 82, 15);
		contentPane.add(lblDatedition);
		
		JLabel lblNbExemplairesEn = new JLabel("Nb exemplaires en consultation");
		lblNbExemplairesEn.setBounds(309, 335, 202, 15);
		contentPane.add(lblNbExemplairesEn);
		
		JLabel lblNbExemplairesEmpruntables = new JLabel("Nb exemplaires empruntables");
		lblNbExemplairesEmpruntables.setBounds(309, 384, 202, 15);
		contentPane.add(lblNbExemplairesEmpruntables);
		
		textFieldNbConsultables = new JTextField();
		textFieldNbConsultables.setEditable(false);
		textFieldNbConsultables.setBounds(517, 333, 46, 19);
		contentPane.add(textFieldNbConsultables);
		textFieldNbConsultables.setColumns(10);
		
		textFieldNbEmpruntables = new JTextField();
		textFieldNbEmpruntables.setEditable(false);
		textFieldNbEmpruntables.setBounds(517, 382, 46, 19);
		contentPane.add(textFieldNbEmpruntables);
		textFieldNbEmpruntables.setColumns(10);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setBounds(23, 477, 264, 130);
		contentPane.add(scrollPane);
		
		textAreaAuteurs = new JTextArea();
		scrollPane.setViewportView(textAreaAuteurs);
		
		scrollPane_1 = new JScrollPane();
		scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane_1.setBounds(23, 300, 264, 130);
		contentPane.add(scrollPane_1);
		
		textAreaExemplaires = new JTextArea();
		scrollPane_1.setColumnHeaderView(textAreaExemplaires);
		
		scrollPane_2 = new JScrollPane();
		scrollPane_2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane_2.setBounds(338, 477, 225, 128);
		contentPane.add(scrollPane_2);
		
		textAreaMotsCles = new JTextArea();
		scrollPane_2.setViewportView(textAreaMotsCles);
		
		lblExemplairesDeLouvrage = new JLabel("Exemplaires de l'ouvrage :");
		lblExemplairesDeLouvrage.setBounds(28, 281, 166, 15);
		contentPane.add(lblExemplairesDeLouvrage);
		
		lblAuteursDeLouvrage = new JLabel("Auteurs de l'ouvrage :");
		lblAuteursDeLouvrage.setBounds(27, 457, 184, 15);
		contentPane.add(lblAuteursDeLouvrage);
		
		lblMotsclefsPourCet = new JLabel("Mots-clés pour cet ouvrage : ");
		lblMotsclefsPourCet.setBounds(338, 457, 205, 15);
		contentPane.add(lblMotsclefsPourCet);
		
		splitPane = new JSplitPane();
		splitPane.setBounds(191, 77, 252, 27);
		contentPane.add(splitPane);
		
		btnAnnuler = new JButton("Annuler"); //ferme la vue consultOuvrage
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueConsultOuvrage.this);
			}
		});
		splitPane.setLeftComponent(btnAnnuler);
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			String isbn = textFieldIsbn.getText();
			getControleur().rechOuvrage(isbn);
			}
		});
		splitPane.setRightComponent(btnRechercher);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(23, 117, 554, 2);
		contentPane.add(separator);
		}
	
	/**
	 * alimentation des composants d'affichage en consultant directement l'ouvrage
	 */
	public void alimente(Ouvrage ouv) {
			textFieldTitre.setText(ouv.getTitre());
			textFieldEditeur.setText(ouv.getEditeur());
			textFieldDateEdition.setText (ESDate.ecrireDate (ouv.getDateEdition()));
			// recherche du nombre d'exemplaire empruntable et consultable de l'ouvrage 
			int nbConsult = ouv.getNbExemplairesEnConsultation();
			int nbEmpr = ouv.getNbExemplairesEmpruntable();
			// on met les valeurs de nbConsult et nbEmpr dans les champs
			textFieldNbConsultables.setText (String.valueOf(nbConsult));
			textFieldNbEmpruntables.setText (String.valueOf(nbEmpr));
		    Collection<Exemplaire> exemplaires = ouv.getExemplaires();
		    for (Exemplaire exemplaire : ouv.getExemplaires()) {//affichage des exemplaires
				  textAreaExemplaires.append( "numéro " + String.valueOf(exemplaire.getNumero()) 
				+ " reçu le " + ESDate.ecrireDate(exemplaire.getDateReception()) + " : " + exemplaire.libStatut() + "\n");
			}
		    HashSet<Auteur> auteurs = ouv.getAuteurs();
		    Message dialog1 = new Message("auteurs :"+auteurs.size());
			dialog1.setVisible(true);
		    for (Auteur auteur : auteurs) {//affichage des exemplaires
				String nom=auteur.getNom();
				String prenom=auteur.getPrenom();
		    	textAreaAuteurs.append(nom+" "+prenom+"\n");
		    }
		    Collection<MotsCles> motscles = ouv.getMotsCles();
		    for (MotsCles mot : ouv.getMotsCles()) {//affichage des exemplaires
		    	textAreaMotsCles.append(mot.getMot() + "\n");
		    }
			this.repaint();
			if ((nbConsult+ nbEmpr)== 0 ){
				Message dialog = new Message("Aucun exemplaire n'est encore disponible");
				dialog.setVisible(true);
			}
	}
	/**
	 * définition des états de la fenêtre, cad des régions actives selon l'état
	 */
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			btnRechercher.setEnabled(true);
			btnAnnuler.setEnabled(true);
			buttonFermer.setEnabled(false);
			textFieldTitre.setEnabled(false);
			textFieldEditeur.setEnabled(false);
			textFieldDateEdition.setEnabled(false);
			break;
			}
		case finale: {
			btnRechercher.setEnabled(false);
			btnAnnuler.setEnabled(false);
			buttonFermer.setEnabled(true);	
			textFieldTitre.setEnabled(true);
			textFieldEditeur.setEnabled(true);
			textFieldDateEdition.setEnabled(true);
			break;
			}
		}
	}
}